From 844d6852b1d473110ec2911edb3283e7fa488510 Mon Sep 17 00:00:00 2001 From: robertl Date: Thu, 8 Jan 2004 21:47:51 +0000 Subject: [PATCH] All files: replace explict calls to fopen with xfopen wrapper that supports - as alias for std{in,out} and tests for error. --- gpsbabel/arcdist.c | 5 +---- gpsbabel/cetus.c | 10 ++-------- gpsbabel/copilot.c | 10 ++-------- gpsbabel/defs.h | 1 + gpsbabel/delgpl.c | 11 ++--------- gpsbabel/easygps.c | 11 ++--------- gpsbabel/gcdb.c | 10 ++-------- gpsbabel/geo.c | 10 ++-------- gpsbabel/geoniche.c | 8 ++------ gpsbabel/gpilots.c | 10 ++-------- gpsbabel/gpsdrive.c | 10 ++-------- gpsbabel/gpspilot.c | 10 ++-------- gpsbabel/gpsutil.c | 11 ++--------- gpsbabel/gpx.c | 10 ++-------- gpsbabel/holux.c | 11 +++-------- gpsbabel/magnav.c | 10 ++-------- gpsbabel/magproto.c | 28 +++++----------------------- gpsbabel/mapopolis.c | 10 ++-------- gpsbabel/mapsend.c | 10 ++-------- gpsbabel/mapsource.c | 15 ++++----------- gpsbabel/navicache.c | 10 ++-------- gpsbabel/ozi.c | 13 ++----------- gpsbabel/pcx.c | 11 ++--------- gpsbabel/polygon.c | 5 +---- gpsbabel/psitrex.c | 10 ++-------- gpsbabel/psp.c | 11 ++--------- gpsbabel/quovadis.c | 10 ++-------- gpsbabel/saroute.c | 5 +---- gpsbabel/tiger.c | 24 ++++-------------------- gpsbabel/tmpro.c | 10 ++-------- gpsbabel/tpg.c | 12 ++---------- gpsbabel/util.c | 25 ++++++++++++++++++++++++- gpsbabel/xcsv.c | 14 +++----------- 33 files changed, 93 insertions(+), 278 deletions(-) diff --git a/gpsbabel/arcdist.c b/gpsbabel/arcdist.c index e4f447347..6ee80ef96 100644 --- a/gpsbabel/arcdist.c +++ b/gpsbabel/arcdist.c @@ -57,10 +57,7 @@ arcdist_process(void) double lat1, lon1, lat2, lon2; int fileline = 0; - FILE *arcfile = fopen( arcfileopt, "r" ); - if ( arcfile == NULL ) { - fatal(MYNAME ": Can't open %s for reading.\n",arcfileopt); - } + FILE *arcfile = xfopen( arcfileopt, "r", MYNAME ); lat1 = lon1 = lat2 = lon2 = BADVAL; while ( !feof(arcfile)) { diff --git a/gpsbabel/cetus.c b/gpsbabel/cetus.c index 94f6ef74e..df0af8548 100644 --- a/gpsbabel/cetus.c +++ b/gpsbabel/cetus.c @@ -93,10 +93,7 @@ arglist_t cetus_args[] = { static void rd_init(const char *fname) { - file_in = fopen(fname, "rb"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "rb", MYNAME); } static void @@ -112,11 +109,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "wb"); + file_out = xfopen(fname, "wb", MYNAME); out_fname = fname; - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } } static void diff --git a/gpsbabel/copilot.c b/gpsbabel/copilot.c index 8ceee66d1..3ee51f824 100644 --- a/gpsbabel/copilot.c +++ b/gpsbabel/copilot.c @@ -47,10 +47,7 @@ struct pdb_record *opdb_rec; static void rd_init(const char *fname) { - file_in = fopen(fname, "rb"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "rb", MYNAME); } static void @@ -62,11 +59,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "wb"); + file_out = xfopen(fname, "wb", MYNAME); out_fname = fname; - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } } static void diff --git a/gpsbabel/defs.h b/gpsbabel/defs.h index b74a8a70a..8c96609d3 100644 --- a/gpsbabel/defs.h +++ b/gpsbabel/defs.h @@ -363,6 +363,7 @@ void debug_mem_close(); #define xxstrappend XSTRAPPEND #endif /* DEBUG_MEM */ +FILE *xfopen(const char *fname, const char *type, const char *errtxt); int case_ignore_strcmp(const char *s1, const char *s2); diff --git a/gpsbabel/delgpl.c b/gpsbabel/delgpl.c index e6d5999ba..c09e6bba7 100644 --- a/gpsbabel/delgpl.c +++ b/gpsbabel/delgpl.c @@ -21,7 +21,6 @@ #include #include -#include #include "defs.h" @@ -47,14 +46,11 @@ static FILE *gplfile_out; static void gpl_rd_init(const char *fname) { - gplfile_in = fopen(fname, "rb"); + gplfile_in = xfopen(fname, "rb", MYNAME); if (sizeof(struct gpl_point) != 56) { fatal(MYNAME, ": gpl_point is %d instead of 56.\n", sizeof(struct gpl_point)); } - if (gplfile_in == NULL) { - fatal(MYNAME, ": '%s' for reading\n", fname); - } } static void @@ -92,10 +88,7 @@ gpl_rd_deinit(void) static void gpl_wr_init(const char *fname) { - gplfile_out = fopen(fname, "wb"); - if (gplfile_out == NULL) { - fatal(MYNAME ": Cannot open '%s' for writing\n", fname); - } + gplfile_out = xfopen(fname, "wb", MYNAME); } static void diff --git a/gpsbabel/easygps.c b/gpsbabel/easygps.c index 51bacc94f..e028e052b 100644 --- a/gpsbabel/easygps.c +++ b/gpsbabel/easygps.c @@ -41,10 +41,7 @@ rd_init(const char *fname) char ibuf[100] = {'0'} ; const char *ezsig = "TerraByte Location File"; - file_in = fopen(fname, "rb"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "rb", MYNAME); fread(ibuf, 52, 1, file_in); @@ -63,12 +60,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "wb"); + file_out = xfopen(fname, "wb", MYNAME); mkshort_handle = mkshort_new_handle(); - - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } } static void diff --git a/gpsbabel/gcdb.c b/gpsbabel/gcdb.c index 861a3c086..a439e0ee6 100644 --- a/gpsbabel/gcdb.c +++ b/gpsbabel/gcdb.c @@ -59,10 +59,7 @@ static char *tbufp = NULL; static void rd_init(const char *fname) { - file_in = fopen(fname, "rb"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "rb", MYNAME); } static void @@ -74,11 +71,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "wb"); + file_out = xfopen(fname, "wb", MYNAME); out_fname = fname; - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } } static void diff --git a/gpsbabel/geo.c b/gpsbabel/geo.c index 171a9546a..ffb0812ed 100644 --- a/gpsbabel/geo.c +++ b/gpsbabel/geo.c @@ -194,10 +194,7 @@ geo_cdata(void *dta, const XML_Char *s, int len) void geo_rd_init(const char *fname) { - fd = fopen(fname, "r"); - if (fd == NULL) { - fatal(MYNAME ":Cannot open %s for reading\n", fname); - } + fd = xfopen(fname, "r", MYNAME); psr = XML_ParserCreate(NULL); if (!psr) { @@ -244,10 +241,7 @@ geo_rd_deinit(void) void geo_wr_init(const char *fname) { - ofd = fopen(fname, "w"); - if (ofd == NULL) { - fatal(MYNAME ":Cannot open '%s' for writing\n", fname); - } + ofd = xfopen(fname, "w", MYNAME); } void diff --git a/gpsbabel/geoniche.c b/gpsbabel/geoniche.c index b98f175d8..94cf48e8d 100644 --- a/gpsbabel/geoniche.c +++ b/gpsbabel/geoniche.c @@ -108,9 +108,7 @@ id2gid(char gid[6+1], int id) static void rd_init(const char *fname) { - FileIn = fopen(fname, "rb"); - if (FileIn == NULL) - fatal(MYNAME ": Cannot open %s for reading\n", fname); + FileIn = xfopen(fname, "rb", MYNAME); } static void @@ -124,10 +122,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - FileOut = fopen(fname, "wb"); + FileOut = xfopen(fname, "wb", MYNAME); FilenameOut = fname; - if (FileOut == NULL) - fatal(MYNAME ": Cannot open %s for writing\n", fname); } static void diff --git a/gpsbabel/gpilots.c b/gpsbabel/gpilots.c index 62eabf543..3e4c87428 100644 --- a/gpsbabel/gpilots.c +++ b/gpsbabel/gpilots.c @@ -124,10 +124,7 @@ arglist_t my_args[] = { static void rd_init(const char *fname) { - file_in = fopen(fname, "rb"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "rb", MYNAME); } static void @@ -143,11 +140,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "wb"); + file_out = xfopen(fname, "wb", MYNAME); out_fname = fname; - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } } static void diff --git a/gpsbabel/gpsdrive.c b/gpsbabel/gpsdrive.c index 72b2bd575..b6dd6262d 100644 --- a/gpsbabel/gpsdrive.c +++ b/gpsbabel/gpsdrive.c @@ -41,10 +41,7 @@ static void *mkshort_rd_handle; static void rd_init(const char *fname) { - file_in = fopen(fname, "r"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "r", MYNAME); } static void @@ -56,10 +53,7 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "w"); - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } + file_out = xfopen(fname, "w", MYNAME); } diff --git a/gpsbabel/gpspilot.c b/gpsbabel/gpspilot.c index 1b5e8538a..8502cb189 100644 --- a/gpsbabel/gpspilot.c +++ b/gpsbabel/gpspilot.c @@ -61,10 +61,7 @@ arglist_t gpspilot_args[] = { static void rd_init(const char *fname) { - file_in = fopen(fname, "rb"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "rb", MYNAME); } static void @@ -80,11 +77,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "wb"); + file_out = xfopen(fname, "wb", MYNAME); out_fname = fname; - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } } static void diff --git a/gpsbabel/gpsutil.c b/gpsbabel/gpsutil.c index 325a48989..081a8435c 100644 --- a/gpsbabel/gpsutil.c +++ b/gpsbabel/gpsutil.c @@ -14,10 +14,7 @@ static void *mkshort_handle; static void rd_init(const char *fname) { - file_in = fopen(fname, "r"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "r", MYNAME); } static void @@ -29,12 +26,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "w"); - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } + file_out = xfopen(fname, "w", MYNAME); mkshort_handle = mkshort_new_handle(); - } static void diff --git a/gpsbabel/gpx.c b/gpsbabel/gpx.c index 0c21fe49b..45a6889d6 100644 --- a/gpsbabel/gpx.c +++ b/gpsbabel/gpx.c @@ -679,10 +679,7 @@ void gpx_rd_init(const char *fname) { if ( fname[0] ) { - fd = fopen(fname, "r"); - if (fd == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname ); - } + fd = xfopen(fname, "r", MYNAME); } else { fd = NULL; @@ -732,10 +729,7 @@ gpx_wr_init(const char *fname) { mkshort_handle = mkshort_new_handle(); - ofd = fopen(fname, "w"); - if (ofd == NULL) { - fatal(MYNAME ": open %s for writing\n", fname ); - } + ofd = xfopen(fname, "w", MYNAME); } static void diff --git a/gpsbabel/holux.c b/gpsbabel/holux.c index 8a9931c87..eb6e4baf2 100644 --- a/gpsbabel/holux.c +++ b/gpsbabel/holux.c @@ -36,14 +36,12 @@ static FILE *file_in; static unsigned char *HxWFile; static void *mkshort_handle; static char fOutname[256]; +#define MYNAME "Holux" static void rd_init(const char *fname) { - file_in = fopen(fname, "rb"); - if (file_in == NULL) { - fatal("GPSBABEL: Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "rb", MYNAME); } @@ -276,10 +274,7 @@ static void data_write(void) waypt_disp_all(holux_disp); - file_out = fopen(fOutname, "wb"); - if (file_out == NULL) { - fatal("GPSUTIL: Cannot open %s for writing\n", fOutname); - } + file_out = xfopen(fOutname, "wb", MYNAME); iWritten = fwrite (HxWFile, 1, GM100_WPO_FILE_SIZE,file_out); if (iWritten == 0) diff --git a/gpsbabel/magnav.c b/gpsbabel/magnav.c index 03068d2d9..a8449bb05 100644 --- a/gpsbabel/magnav.c +++ b/gpsbabel/magnav.c @@ -60,10 +60,7 @@ struct pdb_record *opdb_rec; static void rd_init(const char *fname) { - file_in = fopen(fname, "rb"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "rb", MYNAME); } static void @@ -75,11 +72,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "wb"); + file_out = xfopen(fname, "wb", MYNAME); out_fname = fname; - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } mkshort_handle = mkshort_new_handle(); setshort_length(mkshort_handle, 20); } diff --git a/gpsbabel/magproto.c b/gpsbabel/magproto.c index e5860a799..fb1c6bce1 100644 --- a/gpsbabel/magproto.c +++ b/gpsbabel/magproto.c @@ -21,7 +21,6 @@ #include #include -#include #include "defs.h" #include "magellan.h" @@ -541,11 +540,7 @@ terminit(const char *portname) /* * Probably not a com port. Try it as a file. */ - magfile_in = fopen(portname, "rb"); - if (magfile_in == NULL) { - fatal(MYNAME ": Cannot open %s.%s\n", - portname, strerror(errno)); - } + magfile_in = xfopen(portname, "rb", MYNAME); is_file = 1; icon_mapping = map330_icon_table; mag_cleanse = m330_cleanse; @@ -638,12 +633,7 @@ terminit(const char *portname) { struct termios new_tio; - magfile_in = fopen(portname, "rb"); - - if (magfile_in == NULL) { - fatal(MYNAME ": Cannot open %s.%s\n", - portname, strerror(errno)); - } + magfile_in = xfopen(portname, "rb", MYNAME); is_file = !isatty(fileno(magfile_in)); if (is_file) { @@ -653,7 +643,7 @@ terminit(const char *portname) return; } - magfile_out = fopen(portname, "w+b"); + magfile_out = xfopen(portname, "w+b", MYNAME); magfd = fileno(magfile_in); tcgetattr(magfd, &orig_tio); @@ -761,11 +751,7 @@ mag_wr_init(const char *portname) is_file = 1; } #else - magfile_out = fopen(portname, "w+b"); - if (!magfile_out) { - fatal(MYNAME ": '%s' cannot be opened for writing.\n", - portname); - } + magfile_out = xfopen(portname, "w+b", MYNAME); is_file = !isatty(fileno(magfile_out)); #endif @@ -773,11 +759,7 @@ mag_wr_init(const char *portname) mkshort_handle = mkshort_new_handle(); } if (is_file) { - magfile_out = fopen(portname, "w+b"); - if (magfile_out == NULL) { - fatal(MYNAME ": '%s' cannot be opened for writing.\n", - portname); - } + magfile_out = xfopen(portname, "w+b", MYNAME); icon_mapping = map330_icon_table; mag_cleanse = m330_cleanse; got_version = 1; diff --git a/gpsbabel/mapopolis.c b/gpsbabel/mapopolis.c index c88512683..6b6178c5f 100644 --- a/gpsbabel/mapopolis.c +++ b/gpsbabel/mapopolis.c @@ -75,10 +75,7 @@ struct pdb_record *opdb_rec; static void rd_init(const char *fname) { - file_in = fopen(fname, "rb"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "rb", MYNAME); } static void @@ -90,11 +87,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "wb"); + file_out = xfopen(fname, "wb", MYNAME); out_fname = fname; - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } mkshort_handle = mkshort_new_handle(); setshort_length(mkshort_handle, 20); } diff --git a/gpsbabel/mapsend.c b/gpsbabel/mapsend.c index 798455441..93af494d3 100644 --- a/gpsbabel/mapsend.c +++ b/gpsbabel/mapsend.c @@ -38,10 +38,7 @@ static int trk_version = 30; static void mapsend_rd_init(const char *fname) { - mapsend_file_in = fopen(fname, "rb"); - if (mapsend_file_in == NULL) { - fatal( MYNAME ": Cannot open '%s' for reading\n", fname); - } + mapsend_file_in = xfopen(fname, "rb", MYNAME); } static void @@ -95,10 +92,7 @@ my_fwrite4(int *ptr, FILE *stream) static void mapsend_wr_init(const char *fname) { - mapsend_file_out = fopen(fname, "wb"); - if (mapsend_file_out == NULL) { - fatal(MYNAME ": Cannot open '%s' for writing\n", fname); - } + mapsend_file_out = xfopen(fname, "wb", MYNAME); mkshort_handle = mkshort_new_handle(); route_wp_count = 0; } diff --git a/gpsbabel/mapsource.c b/gpsbabel/mapsource.c index 13ea5ddd8..27d09c967 100644 --- a/gpsbabel/mapsource.c +++ b/gpsbabel/mapsource.c @@ -158,10 +158,7 @@ int mps_converted_icon_number(const int icon_num, const int mpsver, garmin_forma static void mps_rd_init(const char *fname) { - mps_file_in = fopen(fname, "rb"); - if (mps_file_in == NULL) { - fatal(MYNAME ": '%s' for reading\n", fname); - } + mps_file_in = xfopen(fname, "rb", MYNAME); } static void @@ -174,7 +171,7 @@ static void mps_wr_init(const char *fname) { if (mpsmergeout) { - mps_file_out = fopen(fname, "rb"); + mps_file_out = xfopen(fname, "rb", MYNAME); if (mps_file_out == NULL) { mpsmergeout = NULL; } @@ -192,16 +189,12 @@ mps_wr_init(const char *fname) fclose(mps_file_temp); } rename(fname, tempname); - mps_file_temp = fopen(tempname, "rb"); + mps_file_temp = xfopen(tempname, "rb", MYNAME); strcpy(origname, fname); /* save in case we need to revert the renamed file */ } } - mps_file_out = fopen(fname, "wb"); - if (mps_file_out == NULL) { - fatal(MYNAME ": '%s' for writing\n", fname); - exit(1); - } + mps_file_out = xfopen(fname, "wb", MYNAME); } static void diff --git a/gpsbabel/navicache.c b/gpsbabel/navicache.c index c70321d3c..91a04b8f6 100644 --- a/gpsbabel/navicache.c +++ b/gpsbabel/navicache.c @@ -151,10 +151,7 @@ nav_end(void *data, const char *el) void nav_rd_init(const char *fname) { - fd = fopen(fname, "r"); - if (fd == NULL) { - fatal(MYNAME ":Cannot open %s for reading\n", fname); - } + fd = xfopen(fname, "r", MYNAME); psr = XML_ParserCreate(NULL); if (!psr) { @@ -193,10 +190,7 @@ void nav_wr_init(const char *fname) { fatal(MYNAME ": Does not support writing Navicache files.\n"); - ofd = fopen(fname, "w"); - if (ofd == NULL) { - fatal(MYNAME ":Cannot open '%s' for writing\n", fname); - } + ofd = xfopen(fname, "w", MYNAME); } void diff --git a/gpsbabel/ozi.c b/gpsbabel/ozi.c index a875bac02..ec5f2e9dd 100644 --- a/gpsbabel/ozi.c +++ b/gpsbabel/ozi.c @@ -207,11 +207,7 @@ ozi_route_pr() static void rd_init(const char *fname) { - file_in = fopen(fname, "r"); - - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "r", MYNAME); mkshort_handle = mkshort_new_handle(); @@ -240,12 +236,7 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "w"); - - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } - + file_out = xfopen(fname, "w", MYNAME); mkshort_handle = mkshort_new_handle(); /* set mkshort options from the command line if applicable */ diff --git a/gpsbabel/pcx.c b/gpsbabel/pcx.c index 112837a06..3731c33b9 100644 --- a/gpsbabel/pcx.c +++ b/gpsbabel/pcx.c @@ -39,10 +39,7 @@ arglist_t pcx_args[] = { static void rd_init(const char *fname) { - file_in = fopen(fname, "r"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "r", MYNAME); } static void @@ -54,12 +51,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "w"); + file_out = xfopen(fname, "w", MYNAME); mkshort_handle = mkshort_new_handle(); - - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } } static void diff --git a/gpsbabel/polygon.c b/gpsbabel/polygon.c index 46b27a31f..da35b7683 100644 --- a/gpsbabel/polygon.c +++ b/gpsbabel/polygon.c @@ -187,10 +187,7 @@ polygon_process(void) int first = 1; int last = 0; - FILE *polyfile = fopen( polyfileopt, "r" ); - if ( polyfile == NULL ) { - fatal(MYNAME ":Can't open %s for reading.\n",polyfileopt); - } + FILE *polyfile = xfopen( polyfileopt, "r", MYNAME ); olat = olon = lat1 = lon1 = lat2 = lon2 = BADVAL; while ( !feof(polyfile)) { diff --git a/gpsbabel/psitrex.c b/gpsbabel/psitrex.c index b3f99e199..7a848a8a0 100755 --- a/gpsbabel/psitrex.c +++ b/gpsbabel/psitrex.c @@ -178,10 +178,7 @@ psit_find_icon_number_from_desc(const char *desc) static void psit_rd_init(const char *fname) { - psit_file_in = fopen(fname, "r"); - if (psit_file_in == NULL) { - fatal(MYNAME ": '%s' for reading\n", fname); - } + psit_file_in = xfopen(fname, "r", MYNAME); } static void @@ -193,10 +190,7 @@ psit_rd_deinit(void) static void psit_wr_init(const char *fname) { - psit_file_out = fopen(fname, "w"); - if (psit_file_out == NULL) { - fatal(MYNAME ": '%s' for writing\n", fname); - } + psit_file_out = xfopen(fname, "w", MYNAME); } static void diff --git a/gpsbabel/psp.c b/gpsbabel/psp.c index acc735973..ee009b621 100644 --- a/gpsbabel/psp.c +++ b/gpsbabel/psp.c @@ -170,10 +170,7 @@ buffer_washer(char * buff, int buffer_len) static void psp_rd_init(const char *fname) { - psp_file_in = fopen(fname, "rb"); - if (psp_file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + psp_file_in = xfopen(fname, "rb", MYNAME); } static void @@ -185,12 +182,8 @@ psp_rd_deinit(void) static void psp_wr_init(const char *fname) { - psp_file_out = fopen(fname, "wb"); + psp_file_out = xfopen(fname, "wb", MYNAME); mkshort_handle = mkshort_new_handle(); - - if (psp_file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } } static void diff --git a/gpsbabel/quovadis.c b/gpsbabel/quovadis.c index c0fe54353..c49149b1e 100644 --- a/gpsbabel/quovadis.c +++ b/gpsbabel/quovadis.c @@ -76,10 +76,7 @@ static int wpt_to_icon(geocache_type type) { static void rd_init(const char *fname) { - file_in = fopen(fname, "rb"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "rb", MYNAME); } static void @@ -95,11 +92,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "wb"); + file_out = xfopen(fname, "wb", MYNAME); out_fname = fname; - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } } static void diff --git a/gpsbabel/saroute.c b/gpsbabel/saroute.c index e92f0b32c..5a0ee80c4 100644 --- a/gpsbabel/saroute.c +++ b/gpsbabel/saroute.c @@ -66,10 +66,7 @@ Skip(FILE * f, static void rd_init(const char *fname) { - infile = fopen(fname, "rb"); - if (infile == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + infile = xfopen(fname, "rb", MYNAME); } static void diff --git a/gpsbabel/tiger.c b/gpsbabel/tiger.c index 8e37e4188..f0e202bf5 100644 --- a/gpsbabel/tiger.c +++ b/gpsbabel/tiger.c @@ -96,12 +96,8 @@ arglist_t tiger_args[] = { static void rd_init(const char *fname) { - file_in = fopen(fname, "r"); + file_in = xfopen(fname, "r", MYNAME); mkshort_handle = mkshort_new_handle(); - - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } } static void @@ -114,12 +110,8 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "w"); + file_out = xfopen(fname, "w", MYNAME); thresh_days = strtod(oldthresh, NULL); - - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } } static void @@ -245,11 +237,7 @@ data_write(void) if (genurl) { FILE *urlf; - urlf = fopen(genurl, "w"); - if (urlf == NULL) { - fatal(MYNAME ": Cannot open '%s' for writing\n", - genurl); - } + urlf = xfopen(genurl, "w", MYNAME); latsz = fabs(maxlat - minlat); lonsz = fabs(maxlon - minlon); @@ -267,11 +255,7 @@ data_write(void) fclose(urlf); #if CLICKMAP if (clickmap) { - linkf = fopen(clickmap, "w"); - if (linkf == NULL) { - fatal(MYNAME ": Cannot open '%s' for writing\n", - clickmap); - } + linkf = xfopen(clickmap, "w", MY NAME); fprintf(linkf, "\n"); waypt_disp_all(map_plot); fprintf(linkf, "\n"); diff --git a/gpsbabel/tmpro.c b/gpsbabel/tmpro.c index ba5d09fb3..875e009f3 100644 --- a/gpsbabel/tmpro.c +++ b/gpsbabel/tmpro.c @@ -45,10 +45,7 @@ static void *mkshort_handle; static void rd_init(const char *fname) { - file_in = fopen(fname, "r"); - if (file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + file_in = xfopen(fname, "r", MYNAME); } static void @@ -60,10 +57,7 @@ rd_deinit(void) static void wr_init(const char *fname) { - file_out = fopen(fname, "w"); - if (file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } + file_out = xfopen(fname, "w", MYNAME); } static void diff --git a/gpsbabel/tpg.c b/gpsbabel/tpg.c index ef2fbc622..226ff7d03 100644 --- a/gpsbabel/tpg.c +++ b/gpsbabel/tpg.c @@ -86,10 +86,7 @@ valid_tpg_header(char * header, int len) static void tpg_rd_init(const char *fname) { - tpg_file_in = fopen(fname, "rb"); - if (tpg_file_in == NULL) { - fatal(MYNAME ": Cannot open %s for reading\n", fname); - } + tpg_file_in = xfopen(fname, "rb", MYNAME); } static void @@ -101,13 +98,8 @@ tpg_rd_deinit(void) static void tpg_wr_init(const char *fname) { - tpg_file_out = fopen(fname, "wb"); + tpg_file_out = xfopen(fname, "wb", MYNAME); mkshort_handle = mkshort_new_handle(); - - if (tpg_file_out == NULL) { - fatal(MYNAME ": Cannot open %s for writing\n", fname); - } - waypt_out_count = 0; } diff --git a/gpsbabel/util.c b/gpsbabel/util.c index 287e0ccd6..9d8ad9fcf 100644 --- a/gpsbabel/util.c +++ b/gpsbabel/util.c @@ -23,6 +23,7 @@ #include #include #include +#include static int i_am_little_endian = -1; static int doswap(void); @@ -34,7 +35,7 @@ static FILE *debug_mem_file = NULL; void debug_mem_open() { - debug_mem_file = fopen( DEBUG_FILENAME, "a" ); + debug_mem_file = xfopen( DEBUG_FILENAME, "a", "debug" ); } void @@ -220,6 +221,28 @@ xstrappend(char *src, const char *new) return src; } +/* + * Wrapper for open that honours - for stdin, stdout, unifies error text. + */ +FILE * +xfopen(const char *fname, const char *type, const char *errtxt) +{ + FILE *f; + int am_writing = strchr(type, 'w') != NULL; + + if (0 == strcmp(fname, "-")) + return am_writing ? stdout : stdin; + f = fopen(fname, type); + if (NULL == f) { + fatal("%s cannot open '%s' for %s. Error was '%s'.\n", + errtxt, fname, + am_writing ? "write" : "read", + strerror(errno)); + } + return f; +} + + /* * Duplicate a pascal string into a normal C string. */ diff --git a/gpsbabel/xcsv.c b/gpsbabel/xcsv.c index 9d16f4c14..37a9f58e0 100644 --- a/gpsbabel/xcsv.c +++ b/gpsbabel/xcsv.c @@ -405,10 +405,7 @@ xcsv_read_style(const char *fname) xcsv_file_init(); - fp = fopen(fname, "r"); - - if (!fp) - fatal(MYNAME ": Cannot read style file: %s\n", fname); + fp = xfopen(fname, "r", MYNAME); do { memset(sbuff, '\0', sizeof(sbuff)); @@ -465,10 +462,8 @@ xcsv_rd_init(const char *fname) xcsv_read_style(styleopt); } - xcsv_file.xcsvfp = fopen(fname, "r"); + xcsv_file.xcsvfp = xfopen(fname, "r", MYNAME); - if (xcsv_file.xcsvfp == NULL) - fatal(MYNAME ": Cannot open %s for reading\n", fname); } static void @@ -493,12 +488,9 @@ xcsv_wr_init(const char *fname) xcsv_read_style(styleopt); } - xcsv_file.xcsvfp = fopen(fname, "w"); + xcsv_file.xcsvfp = xfopen(fname, "w", MYNAME); xcsv_file.fname = (char *)fname; - if (xcsv_file.xcsvfp == NULL) - fatal(MYNAME ": Cannot open %s for writing\n", fname); - /* set mkshort options from the command line */ if (global_opts.synthesize_shortnames) { -- 2.30.2